﻿#ifndef Z_LOG_DEFINES_H
#define Z_LOG_DEFINES_H

#include <QDateTime>
#include "ZFCommonHeader.h"

ZFLIB_BEGIN_NAMESPACE

/**
 * @brief The LDRSLogMoule enum
 *  日志所属模块，便于定位代码
 */
enum ZLogMoule
{
    LM_UNKNOWN = 0,                     // 未知
    LM_USERTYPE = 65535                 // 用户类型取值下限
};

/**
 * @brief The LDRSLogType enum
 *  日志类型，便于推断打印此日志的原因
 */
enum ZLogType
{
    // 类型，不要过细，因为还有描述语句
    LT_UNKNOWN = 0,                     // 未知
    LT_USERTYPE = 65535                 // 用户类型取值下限
};

/**
 * @brief The LDRSLogLevel enum
 *  日志等级
 *
 */
enum ZLogLevel
{
    LL_NO_LOG = -1,                     // 无日志
    LL_FATAL,                           // 致命信息日志
    LL_CRITICAL,                        // 严重信息日志
    LL_WARNING,                         // 警告信息日志
    LL_INFO,                            // 提示信息日志
    LL_DEBUG,                           // 调试信息日志
    LL_ALL_LOG                          // 所有日志
};

// 一条日志的消息内容
struct ZLogMessage
{
    Qt::HANDLE   thread_id;
    ZLogMoule    module_id;
    ZLogType     log_type;
    ZLogLevel    log_level;
    QString      msg_content;
    QString      pos;

    ZLogMessage()
    {
        thread_id = 0;
        module_id = LM_UNKNOWN;
        log_level = LL_DEBUG;
        log_type  = LT_UNKNOWN;
    }
};

ZFLIB_END_NAMESPACE

#endif // Z_LOG_DEFINES_H
